package com.zhangye.test.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.zhangye.test.mapper.AdminRolesAuthorityMapper;
import com.zhangye.test.mapper.AdminRolesMapper;
import com.zhangye.test.model.AdminRoles;
import com.zhangye.test.model.AdminRolesAuthority;
import com.zhangye.test.util.PageInfo;


/**
 * 角色管理
 * @author 作者：张叶
 * @version 创建时间：2016年7月11日 下午2:43:38
 */
@Service("adminRolesService")
public class AdminRolesService {

	@Autowired
	private AdminRolesMapper adminRolesMapper;
	@Autowired
	private AdminRolesAuthorityMapper adminRolesAuthorityMapper;// 角色权限关系
	
	/**
	 * 查找所有记录
	 * @author 张叶
	 * @version 创建时间：2016年7月11日 下午2:46:58
	 */
	public List<AdminRoles> selectAll(){
		List<AdminRoles> list = adminRolesMapper.selectAll();
		return list;
	}

	/**
	 * 分页查询角色列表
	 * 作者： 张叶
	 * 创建时间：2018年5月29日  下午4:18:41
	 */
	public List<Map<String, Object>> getRoleList(PageInfo pageInfo, String where, String order) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("myCount", pageInfo.getCount());
		param.put("pageSize", pageInfo.getPageSize());
		param.put("page", pageInfo.getPage());
		param.put("where", where);
		param.put("order", order);
		List<Map<String, Object>> m = adminRolesMapper.getRoleList(param);
		pageInfo.setCount(Integer.parseInt(param.get("myCount").toString()));
		return m;
	}

	
	/**
	 * 删除角色
	 * 作者： 张叶
	 * 创建时间：2017年12月26日  下午5:05:56
	 */
	@Transactional
	public int deleteById(Long rId) {
		int count = 0;
		count = adminRolesMapper.deleteByPrimaryKey(rId);
		int cNum = adminRolesAuthorityMapper.getCountByRoleId(rId);
		if (cNum > 0) {
			adminRolesAuthorityMapper.deleteByRoleId(rId);
		}
		return count;
	}

	
	/**
	 * 根据名称查询角色
	 * 作者： 张叶
	 * 创建时间：2018年5月29日  下午4:18:58
	 */
	public AdminRoles findByName(String arName) {
		return adminRolesMapper.findByName(arName);
	}

	
	/**
	 * 保存角色
	 * 作者： 张叶
	 * 创建时间：2018年5月29日  下午4:19:04
	 */
	public int save(AdminRoles ar) {
		return adminRolesMapper.insert(ar);
	}

	
	/**
	 * 根据id查询角色信息
	 * 作者： 张叶
	 * 创建时间：2018年5月29日  下午4:19:12
	 */
	public AdminRoles findById(Long rId) {
		return adminRolesMapper.selectByPrimaryKey(rId);
	}

	
	/**
	 * 修改角色
	 * 作者： 张叶
	 * 创建时间：2018年5月29日  下午4:19:17
	 */
	public int update(AdminRoles role) {
		return adminRolesMapper.updateByPrimaryKey(role);
	}

	/**
	 * 修改角色权限
	 * 作者：张叶
	 * 时间：2016年9月7日 上午11:22:44
	 */
	@Transactional
	public void updateAuthority(Long rId, Long[] id) {
		//在权限表中先删除此角色所有有权限
		int count = adminRolesAuthorityMapper.getCountByRoleId(rId);
		if (count > 0) {
			adminRolesAuthorityMapper.deleteByRoleId(rId);
		}
		
		//判断是否选中权限，如果选中，则添加
		if(id != null && !"".equals(id)){
			for (Long item : id) {
				AdminRolesAuthority arRoleAu = new AdminRolesAuthority();
				arRoleAu.setAraAuthorityid(item);
				arRoleAu.setAraRolesid(rId);
				adminRolesAuthorityMapper.insert(arRoleAu);
			}
		}
	}
}
